package com.haixiaoke.saas.order.service.impl;

import com.haixiaoke.saas.order.domain.OrderAmountItem;
import com.haixiaoke.saas.order.mapper.OrderAmountItemMapper;
import com.haixiaoke.saas.order.service.IOrderAmountItemService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * 商品的计算数值和商品的类型Service业务层处理
 *
 * @author haixiaoke
 * @date 2023-04-17
 */
@Service
public class OrderAmountItemServiceImpl implements IOrderAmountItemService {
    @Autowired
    private OrderAmountItemMapper orderAmountItemMapper;

    /**
     * 查询商品的计算数值和商品的类型
     *
     * @param amountItemId 商品的计算数值和商品的类型主键
     * @return 商品的计算数值和商品的类型
     */
    @Override
    public OrderAmountItem selectOrderAmountItemByAmountItemId(Long amountItemId) {
        return orderAmountItemMapper.selectOrderAmountItemByAmountItemId(amountItemId);
    }

    /**
     * 查询商品的计算数值和商品的类型列表
     *
     * @param orderAmountItem 商品的计算数值和商品的类型
     * @return 商品的计算数值和商品的类型
     */
    @Override
    public List<OrderAmountItem> selectOrderAmountItemList(OrderAmountItem orderAmountItem) {
        return orderAmountItemMapper.selectOrderAmountItemList(orderAmountItem);
    }

    /**
     * 新增商品的计算数值和商品的类型
     *
     * @param orderAmountItem 商品的计算数值和商品的类型
     * @return 结果
     */
    @Override
    public int insertOrderAmountItem(OrderAmountItem orderAmountItem) {
//        orderAmountItem.setCreateTime(new Date());
        return orderAmountItemMapper.insertOrderAmountItem(orderAmountItem);
    }

    /**
     * 修改商品的计算数值和商品的类型
     *
     * @param orderAmountItem 商品的计算数值和商品的类型
     * @return 结果
     */
    @Override
    public int updateOrderAmountItem(OrderAmountItem orderAmountItem) {
        orderAmountItem.setUpdateTime(new Date());
        return orderAmountItemMapper.updateOrderAmountItem(orderAmountItem);
    }

    /**
     * 批量删除商品的计算数值和商品的类型
     *
     * @param amountItemIds 需要删除的商品的计算数值和商品的类型主键
     * @return 结果
     */
    @Override
    public int deleteOrderAmountItemByAmountItemIds(Long[] amountItemIds) {
        return orderAmountItemMapper.deleteOrderAmountItemByAmountItemIds(amountItemIds);
    }

    /**
     * 删除商品的计算数值和商品的类型信息
     *
     * @param amountItemId 商品的计算数值和商品的类型主键
     * @return 结果
     */
    @Override
    public int deleteOrderAmountItemByAmountItemId(Long amountItemId) {
        return orderAmountItemMapper.deleteOrderAmountItemByAmountItemId(amountItemId);
    }

    @Override
    public int insertBatchOrderAmountItem(List<OrderAmountItem> items) {
        return orderAmountItemMapper.insertBatchOrderAmountItem(items);
    }

    @Override
    public List<OrderAmountItem> selectOrderAmountItemByOrderId(String orderId) {
        return orderAmountItemMapper.selectOrderAmountItemByOrderId(orderId);
    }

    @Override
    public Double selectItemSumByOrderId(String orderId, Integer goodsType) {
        return orderAmountItemMapper.selectItemSumByOrderId(orderId,goodsType);
    }

    @Override
    public Map<Integer, Map<String, Object>> selectItemByOrderId(String orderId) {
        return orderAmountItemMapper.selectItemByOrderId(orderId);
    }

    @Override
    public void deleteOrderAmountItemByOrderId(String orderId) {
        orderAmountItemMapper.deleteOrderAmountItemByOrderId(orderId);
    }

    @Override
    public int updateOrderAmountItemByOrderId(OrderAmountItem item) {
        return orderAmountItemMapper.updateOrderAmountItemByOrderId(item);
    }

    @Override
    public OrderAmountItem selectOrderAmountItemByOrderIdAndGoodsType(String orderId, Integer goodsType) {
        return orderAmountItemMapper.selectOrderAmountItemByOrderIdAndGoodsType(orderId,goodsType);
    }

}
